package com.xiaomeng.singleton.type3;

public class SingletonTest03 {


    public static void main(String[] args) {
        Singleton instance1 = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println(instance1 == instance2);
        System.out.println("instance1.hashCode : " + instance1.hashCode());
        System.out.println("instance2.hashCode : " + instance2.hashCode());

    }

}

class Singleton {
    private static Singleton instance;


    /*  --懒汉式---  */
    // 提供一个静态方法,当使用到该方法时,才去创建instance




    private Singleton() {}
    // 提供一个静态方法，当使用到这个方法时，才会去创建instance对象
    // 懒汉式
    public static Singleton getInstance() {
        /**
         * 只能在单线程下使用，
         * 如果是多线程的情况，在进入if()判断语句块，还未来得及往下执行，
         * 另一个线程也可能通过这个判断语句，这时会产生多个实例
         * 在实际开发中，不要使用这种方式：很可能破坏单例模式设计的初衷
         * */
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

